package tools.old.files;

import javax.swing.ButtonGroup;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;

import javax.swing.JRadioButton;

import java.awt.CardLayout;

import javax.swing.JTextField;
import javax.swing.JComboBox;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.text.NumberFormat;

import javax.swing.JButton;
import javax.swing.JPasswordField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;

import dao.account.DataLayerAccount;
import tools.FieldLimit;

public class RegistrerenView extends JFrame implements ActionListener {
	public  JTextField VoornaamTF;
	public  JTextField AchternaamTF;
	public  JTextField EmailTF;
	public  JTextField GebruikersnaamTF;
	public  JTextField OvnummerTF;
	public  JTextField AfkortingTF;

	public  JButton btnReset = new JButton("Reset");
	public  JRadioButton StudentRDB = new JRadioButton("");
	public  JLabel lblNewLabel = new JLabel("Registreren");
	private static RegistrerenView instance;
	public  JLabel lblStudent = new JLabel("Student");
	public  JPanel mainPanel = new JPanel();
	public  JLabel lblDocent = new JLabel("Docent");
	public  JRadioButton DocentRDB = new JRadioButton("");
	public  JLabel lblVoornaam = new JLabel("Voornaam");
	public  JLabel lblAchternaam = new JLabel("Achternaam");
	public  JLabel lblEmail = new JLabel("E-mail");
	public  JLabel lblGebruikersnaam = new JLabel("Gebruikersnaam");
	public  JComboBox MentorklasCB = new JComboBox();
	public  JComboBox KlasCB = new JComboBox();
	public  ButtonGroup bg = new ButtonGroup();
	public  JButton btnRegistreren = new JButton("Registreren");
	public  JPasswordField passwordField;

	public RegistrerenView(){
		Klassenlijst.getInstance();
		panelSetup();
		setLocationRelativeTo(null);
	}

	public static RegistrerenView getInstance() {
		if (instance == null) {
			instance = new  RegistrerenView ();

		}
		return instance;
	}

	public void panelSetup() {
		getContentPane().setLayout(null);
		mainPanel.setLayout(null);
		mainPanel.setSize(new Dimension(1195, 720));
		
		bg.add(DocentRDB);
		bg.add(StudentRDB);
		
		lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 20));
		lblNewLabel.setBounds(10, 11, 201, 25);
		mainPanel.add(lblNewLabel);
		
		
		lblStudent.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblStudent.setBounds(37, 64, 61, 23);
		mainPanel.add(lblStudent);
		
		StudentRDB.setBounds(10, 64, 21, 23);
		mainPanel.add(StudentRDB);
		
		
		lblDocent.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblDocent.setBounds(186, 68, 46, 14);
		mainPanel.add(lblDocent);
		
		DocentRDB.setBounds(159, 64, 21, 23);
		mainPanel.add(DocentRDB);
		
		
		lblVoornaam.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblVoornaam.setBounds(10, 124, 73, 14);
		mainPanel.add(lblVoornaam);
		
		lblAchternaam.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblAchternaam.setBounds(10, 152, 87, 14);
		mainPanel.add(lblAchternaam);
		
		lblEmail.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblEmail.setBounds(10, 177, 46, 14);
		mainPanel.add(lblEmail);
		
		lblGebruikersnaam.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblGebruikersnaam.setBounds(10, 204, 120, 14);
		mainPanel.add(lblGebruikersnaam);
		

		VoornaamTF = new JTextField();
		VoornaamTF.setBounds(159, 121, 120, 20);
		mainPanel.add(VoornaamTF);
		VoornaamTF.setColumns(10);

		AchternaamTF = new JTextField();
		AchternaamTF.setBounds(159, 149, 120, 20);
		mainPanel.add(AchternaamTF);
		AchternaamTF.setColumns(10);

		EmailTF = new JTextField();
		EmailTF.setBounds(159, 174, 120, 20);
		mainPanel.add(EmailTF);
		EmailTF.setColumns(10);

		GebruikersnaamTF = new JTextField();
		GebruikersnaamTF.setBounds(159, 201, 120, 20);
		mainPanel.add(GebruikersnaamTF);
		GebruikersnaamTF.setColumns(10);
		
		
		JLabel lblWachtwoord = new JLabel("Wachtwoord");
		lblWachtwoord.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblWachtwoord.setBounds(10, 229, 73, 14);
		mainPanel.add(lblWachtwoord);

		JLabel label = new JLabel("___________________________________________________________________________");
		label.setBounds(10, 278, 528, 14);
		mainPanel.add(label);

		JLabel lblStudent_1 = new JLabel("Student");
		lblStudent_1.setFont(new Font("Tahoma", Font.BOLD, 15));
		lblStudent_1.setBounds(10, 303, 87, 25);
		mainPanel.add(lblStudent_1);

		JLabel lblNewLabel_1 = new JLabel("Ov-Nummer");
		lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblNewLabel_1.setBounds(10, 382, 87, 14);
		mainPanel.add(lblNewLabel_1);

		OvnummerTF = new JTextField();
		OvnummerTF.setBounds(159, 379, 120, 20);
		OvnummerTF.setColumns(10);
		OvnummerTF.setDocument(new FieldLimit(6));
		
		//alleen mogelijkheid getallen invoeren
		OvnummerTF.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                char caracter = e.getKeyChar();
                if (((caracter < '0') || (caracter > '9'))
                        && (caracter != '\b')) {
                    e.consume();
                }
            }
        });
		
		mainPanel.add(OvnummerTF);

		JLabel lblKlas = new JLabel("Klas");
		lblKlas.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblKlas.setBounds(10, 416, 46, 14);
		mainPanel.add(lblKlas);

		
		//KLASSEN OPHALEN UIT ARRAYLIST EN IN COMBOBOX PLEUREN
		KlasCB = new JComboBox(Klassenlijst.getInstance().getKlassen().toArray());
		KlasCB.setBounds(159, 410, 122, 20);
		mainPanel.add(KlasCB);

		//KLASSEN OPHALEN UIT ARRAYLIST EN IN COMBOBOX PLEUREN
		MentorklasCB = new JComboBox(Klassenlijst.getInstance().getKlassen().toArray());
		MentorklasCB.setBounds(159, 540, 120, 20);
		mainPanel.add(MentorklasCB);


		JLabel label_1 = new JLabel("___________________________________________________________________________");
		label_1.setBounds(10, 441, 528, 14);
		mainPanel.add(label_1);

		JLabel lblVulOnderstaande = new JLabel("* Vul onderstaande gegevens in indien de student is aangevinkt in bovenstaand formulier");
		lblVulOnderstaande.setForeground(Color.LIGHT_GRAY);
		lblVulOnderstaande.setBounds(10, 345, 528, 14);
		mainPanel.add(lblVulOnderstaande);

		JLabel lblvulOnderstaandeGegevens = new JLabel("* Vul onderstaande gegevens in indien de docent is aangevinkt in bovenstaand formulier");
		lblvulOnderstaandeGegevens.setForeground(Color.LIGHT_GRAY);
		lblvulOnderstaandeGegevens.setBounds(10, 515, 566, 14);
		mainPanel.add(lblvulOnderstaandeGegevens);

		JLabel lblMentorklas = new JLabel("Mentorklas");
		lblMentorklas.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblMentorklas.setBounds(10, 546, 73, 14);
		mainPanel.add(lblMentorklas);

		JLabel lblAfkorting = new JLabel("Afkorting");
		lblAfkorting.setFont(new Font("Tahoma", Font.PLAIN, 13));
		lblAfkorting.setBounds(10, 574, 120, 14);
		mainPanel.add(lblAfkorting);

		AfkortingTF = new JTextField();
		AfkortingTF.setBounds(159, 571, 120, 20);
		mainPanel.add(AfkortingTF);
		AfkortingTF.setColumns(10);

		JLabel lblDocent_1 = new JLabel("Docent");
		lblDocent_1.setFont(new Font("Tahoma", Font.BOLD, 15));
		lblDocent_1.setBounds(10, 466, 87, 25);
		mainPanel.add(lblDocent_1);

		JLabel label_2 = new JLabel("___________________________________________________________________________");
		label_2.setBounds(10, 629, 528, 14);
		mainPanel.add(label_2);
		btnRegistreren.setFont(new Font("Tahoma", Font.BOLD, 11));

		btnRegistreren.setBounds(328, 654, 111, 23);
		mainPanel.add(btnRegistreren);

		btnReset.setBounds(449, 654, 89, 23);
		mainPanel.add(btnReset);
		mainPanel.setLayout(null);

		passwordField = new JPasswordField();
		passwordField.setBounds(159, 226, 120, 20);
		mainPanel.add(passwordField);

		this.getContentPane().add(mainPanel);
		this.getContentPane().setLayout(null);
		this.setTitle("Registreer een account");
		this.setSize(560,720);
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // Hide_on_close heb ik gedaan zodat hij verborgen wordt op het moment dat je hem wegklikt. Vervolgens kan je bij opnieuw op de knop te drukken hem weer zien met setvisible(true) -vera
		this.setVisible(true);
		this.setResizable(false);
		
		Dimension center = Toolkit.getDefaultToolkit().getScreenSize();
		this.setLocation(center.width/2-this.getSize().width/2, center.height/2-this.getSize().height/2);
	}

	public void AddAL(){
		btnRegistreren.addActionListener(new RegistrerenController(btnRegistreren));
		btnReset.addActionListener(new RegistrerenController(btnReset));	
		StudentRDB.addActionListener(new RegistrerenController(StudentRDB));
		DocentRDB.addActionListener(new RegistrerenController(DocentRDB));
	}

	//getters and setters

	public  JTextField getVoornaamTF() {
		return VoornaamTF;
	}

	public  void setVoornaamTF(JTextField voornaamTF) {
		VoornaamTF = voornaamTF;
	}

	public  JTextField getAchternaamTF() {
		return AchternaamTF;
	}

	public  void setAchternaamTF(JTextField achternaamTF) {
		AchternaamTF = achternaamTF;
	}

	public  JTextField getEmailTF() {
		return EmailTF;
	}

	public  void setEmailTF(JTextField emailTF) {
		EmailTF = emailTF;
	}

	public  JPasswordField getPasswordField() {
		return passwordField;
	}

	public  JComboBox getMentorklasCB() {
		return MentorklasCB;
	}

	public  void setMentorklasCB(JComboBox mentorklasCB) {
		MentorklasCB = mentorklasCB;
	}

	public  JComboBox getKlasCB() {
		return KlasCB;
	}

	public  void setKlasCB(JComboBox klasCB) {
		KlasCB = klasCB;
	}

	public void setPasswordField(JPasswordField passwordField) {
		this.passwordField = passwordField;
	}

	public  JTextField getGebruikersnaamTF() {
		return GebruikersnaamTF;
	}

	public  void setGebruikersnaamTF(JTextField gebruikersnaamTF) {
		GebruikersnaamTF = gebruikersnaamTF;
	}

	public  JTextField getOvnummerTF() {
		return OvnummerTF;
	}

	public  void setOvnummerTF(JTextField ovnummerTF) {
		OvnummerTF = ovnummerTF;
	}


	public  JTextField getVakspecialiteitTF() {
		return AfkortingTF;
	}

	public  void setVakspecialiteitTF(JTextField vakspecialiteitTF) {
		AfkortingTF = vakspecialiteitTF;
	}

	@Override
	public void actionPerformed(ActionEvent e) {

	}
}
